package com.dd.cloud.user.mapper.doctor;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dd.cloud.user.entity.doctor.PatientMedCard;
import com.dd.cloud.user.req.doctor.*;
import com.dd.cloud.user.res.doctor.*;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 患者详细信息表 Mapper 接口
 * </p>
 *
 * @author czg
 * @since 2022-04-27
 */
public interface PatientMedCardMapper extends BaseMapper<PatientMedCard> {
    /**
     * 查询患者信息
     *
     * @param medId
     * @return
     */
    PatientMedCardDetailRes queryPatientMedCardDetail(@Param("medId") String medId);

    /**
     * 检查患者信息是否存在 存在返回信息
     *
     * @param req
     * @return
     */
    PatientMedCardDetailH5Res queryPatientMedCardDetailH5(@Param("req") PatientMedCardDetailH5Req req);

    /**
     * 分页查询就诊卡
     *
     * @param page
     * @param req@
     * @return
     */
    Page<PatientMedCardPageRes> getPatientMedCardPage(Page<?> page, @Param("req") ParamsMedCardReq req);

    /**
     * 分页查询患者病历卡信息
     *
     * @param iPage
     * @param req
     * @return
     */
    IPage<PatientMedCardMobPageRes> selPatientMedCardMobPage(IPage<?> iPage, @Param("req") ParamsMedCardMobPageReq req);

    /**
     * 查询问诊人列表
     *
     * @param req
     * @return
     */
    List<PatientMedCardListRes> getPatientMedCardList(@Param("req") ParamsMedCardListReq req);

    /**
     * 就诊卡查询机构
     *
     * @param medId
     * @return
     */
    List<MedMechanListRes> getMedMechan(@Param("medId") String medId);

    /**
     * 查询医生邀请患者名单列表
     *
     * @param iPage
     * @param doctorId
     * @return
     */
    IPage<DoctorInvitePatientPageRes> queryDoctorInvitePatientPageRes(IPage<?> iPage, @Param("doctorId") Integer doctorId);

    /**
     * 查询患者列表 运营后台 分页
     *
     * @param iPage
     * @param req
     * @return
     */
    IPage<PatientMedCardPageAdminRes> queryPatientMedCardPageAdmin(IPage<?> iPage, @Param("req") PatientMedCardPageAdminReq req);

    /**
     * 获取就诊时间
     *
     * @param medId
     * @return
     */
    LocalDateTime getLastPayDate(@Param("medId") String medId);

    /**
     * 查地址
     * @param medId
     */
    List<PatientMedCardAddrListH5Res> queryAddress(@Param("medId") String medId);
}
